Thực đơn
Trao đổi khóa Diffie-Hellman Chương trình C đơn giản#include <stdio.h>#include <math.h>#include <stdlib.h>#include <time.h>#include <conio.h>int prime(int num) { int i; for (i = 2; i*i <= num; ++i) if (num % i == 0) return 0; return 1;}int mod(int base, int expo, int num) { int res = 1; int i; for (i = 1; i <= expo; ++i) res = (res * base) % num; return res;}int main() { int p, g, a, b, i, j, r1, r2, k1, k2, k3; srand(time(NULL)); p: printf("\nNhập p và g: (hoặc comment dòng này để tạo giá trị ngẫu nhiên)"); scanf("%d %d", &p, &g); if (!prime(p) || !prime(g)) { printf("\nCác giá trị nhập không phải nguyên tố... Vui lòng nhập lại..."); goto p; } else { srand(time(NULL)); a = rand() % 50; b = rand() % 50; printf("\nSố tạo ngẫu nhiên: %d %d", a, b); r1 = mod(g, a, p); // g^a mod p r2 = mod(g, b, p); // g^b mod p printf("\nR1 = %d\nR2 = %d\n", r1, r2); k1 = mod(r2, a, p); // r2^a mod p k2 = mod(r1, b, p); // r1^b mod p printf("\nKhóa bí mật chung tính được bởi Alice: %d", k1); printf("\nKhóa bí mật chung tính được bởi Bob: %d", k2); k3 = mod(g, a * b, p); // g^a*b mod p printf("\nKiểm tra Khóa bí mật chung: %d", k3); // phải giống k1 và k2 }getch(); // Dừng màn hình để xem kết quả}
Thực đơn
Trao đổi khóa Diffie-Hellman Chương trình C đơn giảnLiên quan
Trao đổi chất Trao đổi khóa Diffie-Hellman Trao đổi oxy qua màng ngoài cơ thể Trao đổi bạn tình Trao đổi dữ liệu điện tử Trao đổi khí Trao đổi nhiệt Trao đổi chéo nhiễm sắc thể Trao đổi địa nhiệt Trao đổiTài liệu tham khảo
WikiPedia: Trao đổi khóa Diffie-Hellman http://www.cacr.math.uwaterloo.ca/hac/ http://cryptocellar.web.cern.ch/cryptocellar/cesg/... http://cryptocellar.web.cern.ch/cryptocellar/cesg/... http://code.google.com/p/sacct/ http://docs.google.com/viewer?a=v&pid=sites&srcid=... http://video.google.com/videoplay?docid=8991737124... http://www.google.com/patents?vid=4.2 http://www.google.com/patents?vid=4200770 http://www.jya.com/ellisdoc.htm http://www.rsasecurity.com/rsalabs/node.asp?id=230...